cert-manager の CA Injector で External Secrets Operator の webhook の CA を管理する
TL;DR
feat(external-secrets): use cert-manager to generate/inject CA for we… · tosuke-homelab/k8s@136d120 · GitHub
External Secrets Operator は Validation Webhook を提供しているが,これの利用に必要な証明書の生成を公式が提供しているマニフェストではcert-controllerという自前の実装で生成してValidatingWebhookConfigurationやCustomResourceDefinitionに適用したりSecretの生成をしたりしている。
ところでおそらく 90% くらいのクラスタには入っているであろう cert-manager は CA Injector という機能を持っていて,CertificateリソースやSecretリソースから証明書を取り出してこれらのリソースのcaBundleに書き込むという Admission Webhooks を使いたい場合頻出する処理を自動化することができる。
この処理はcert-controllerが行っていることと(ほぼ)同じなので,頑張ることでcert-controllerを置き換えることができる。
個人的には独自の実装が使われているのは気持ち悪いし無駄なコンテナが立っているという時点で気分がよくないのでやったという部分もある
ここまでの内容は(そしてこれからも) external-secrets-operatorのwebhookに使う証明書をcert-managerで賄う時のポイント - Qiita の焼き直しなのだが,いくつか押さえておくと便利そうなポイントを挙げておく。
Certificate
SelfSigned Issuer で生成すると便利。この場合は特に設定せずともSecretにca.crtが入るようなので特別な設定は必要なさそう
cert-manager.io/inject-ca-fromアノテーション
Argo CD w/ kustomizeでCRDだけkubectl replace と同じように kustomize の Patching multiple resouces が使える